package com.Algorithm.HUAWEI.FUNNY;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zjz
 * @Date: 2022/03/22/18:55
 * @Description:
 * @Target:
 */
public class 称砝码 {
    /*
    * 描述
        现有n种砝码，重量互不相等，分别为 m1,m2,m3…mn ；
        每种砝码对应的数量为 x1,x2,x3...xn 。现在要用这些砝码去称物体的重量(放在同一侧)，问能称出多少种不同的重量。

        注：
        称重重量包括 0
        数据范围：每组输入数据满足 1≤n≤10  ， 1 m_i ≤2000
          ， 1 < x_i ≤10

        输入描述：
        对于每组测试数据：
        第一行：n --- 砝码的种数(范围[1,10])
        第二行：m1 m2 m3 ... mn --- 每种砝码的重量(范围[1,2000])
        第三行：x1 x2 x3 .... xn --- 每种砝码对应的数量(范围[1,10])
        输出描述：
        利用给定的砝码可以称出的不同的重量数

        示例1
        输入：
        2
        1 2
        2 1
        复制
        输出：
        5
        复制
        说明：
        可以表示出0，1，2，3，4五种重量。
        * */


    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.valueOf(in.readLine());
        String[] s1 = in.readLine().split(" ");
        String[] s2 = in.readLine().split(" ");

        ArrayList<Integer> list = new ArrayList<>();
        HashSet set = new HashSet();
        set.add(0);




        for (int i = 0; i < s1.length; i++) {
            for (int j = 0; j < Integer.valueOf(s2[i]); j++) {
                list.add(Integer.valueOf(s1[i]));
            }
        }



        System.out.println();
        for (int i = 0; i < list.size(); i++) {
         perOne(list, i, set);
        }




        /*29 29  108 108 108 108 108 185 */
//0 29 58 108 137 166 185 214 216 243 245 274 324 351 353 382 432 459 461 490 540 567 569 598 675 783
        System.out.println(set.size());
        for (Object o : set) {
            System.out.print(o+" ");
        }

    }

    // 暴力解决，直接反正list里，然后不断加，组合。
   // 问题；没考虑到跳到最后一个值的加，12 5= 8   123 5= 11 2 45 =11  1 345 = 13
    /*
    *
    * 10
    1 2 3 4 5
    1 1 1 1 1
    1 2 3 4 5
    13
    0 1 2 3 4 5 6 7 9 10 12 14 15
    *
    * */
    static void perOne(ArrayList<Integer> list,int index,HashSet set){
        if (index>=list.size()){
            return;
        }

        int sum = list.get(index);
        set.add(sum);

        for (int i = index; i < list.size(); i++) {
            sum = list.get(i);
            set.add(sum);
            for (int j = i+1; j < list.size(); j++) {
                sum+=list.get(j);
                set.add(sum);
            }
        }


    }
}
